package com.fowo.api.model.supplier.order;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 供应商订单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SupplierOrderImportPo {

  /** 单号 */
  @ExcelProperty("单号")
  private String supplierOrder;

  /** 供应商编号 */
  @ExcelProperty("供应商编号")
  @Size(max = 200, message = "供应商编号长度不能超过200")
  private String supplierId;

  /** 供应商名称 */
  @ExcelProperty("供应商名称")
  @Size(max = 200, message = "供应商名称长度不能超过200")
  private String supplierName;

  /** 采购单号 */
  @ExcelProperty("采购单号")
  @Size(max = 50, message = "采购单号长度不能超过50")
  private String purchaseOrderCode;

  /** 联系人 */
  @ExcelProperty("联系人")
  @Size(max = 50, message = "联系人长度不能超过50")
  private String contactPersonName;

  @ExcelIgnore
  @Schema(title = "联系人")
  private String contactPerson;

  /** 联系电话 */
  @ExcelProperty("联系电话")
  @Size(max = 50, message = "联系电话长度不能超过50")
  private String contactNumber;

  /** 结算方式 */
  @ExcelProperty("结算方式")
  private String settlementMethod;

  /** 预付比例 */
  @ExcelProperty("预付比例")
  @DecimalString(message = "预付比例小数格式不正确", label = "预付比例")
  private String advanceRatio;

  /** 结算描述 */
  @ExcelProperty("结算描述")
  @Size(max = 50, message = "结算描述长度不能超过50")
  private String settlementDescribe;

  /** 支付方式 */
  @ExcelProperty("支付方式")
  private String paymentMethod;

  /** 采购币种 */
  @ExcelProperty("采购币种")
  private String purchaseCurrency;

  /** 运费 */
  @ExcelProperty("运费")
  @DecimalString(message = "运费小数格式不正确", label = "运费")
  private String shippingPrice;

  /** 其它费用 */
  @ExcelProperty("其它费用")
  @DecimalString(message = "其它费用小数格式不正确", label = "其它费用")
  private String otherCurrency;

  /** 费用分摊方式 */
  @ExcelProperty("费用分摊方式")
  @EnumsString(
    value = { "不分摊", "按金额", "按数量" },
    message = "费用分摊方式只能是“不分摊”, “按金额”, “按数量”中的一个"
  )
  private String feePartType;

  /** 含税 */
  @ExcelProperty("含税")
  @EnumsString(value = { "否", "是" }, message = "含税只能是“否”, “是”中的一个")
  private String includingTax;

  /** 采购员 */
  @ExcelProperty("采购员")
  @Size(max = 50, message = "采购员长度不能超过50")
  private String optUidName;

  @ExcelIgnore
  @Schema(title = "采购员")
  private String optUid;

  /** 单据负责人 */
  @ExcelProperty("单据负责人")
  @Size(max = 50, message = "单据负责人长度不能超过50")
  private String oversightUidName;

  @ExcelIgnore
  @Schema(title = "单据负责人")
  private String oversightUid;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remarks;

  /** 总金额 */
  @ExcelProperty("总金额")
  @DecimalString(message = "总金额小数格式不正确", label = "总金额")
  private String totalPrice;

  /** 发货量 */
  @ExcelProperty("发货量")
  @IntegerString(message = "发货量数值格式不正确", label = "发货量", min = 0)
  private String quantityReceived;

  /** 状态 */
  @ExcelProperty("状态")
  private String stauts;

  /** 采购日期 */
  @ExcelProperty("采购日期")
  @DateString(message = "采购日期不是有效的日期格式")
  private String purchasesDate;

  /** 采购数量 */
  @ExcelProperty("采购数量")
  @IntegerString(
    message = "采购数量数值格式不正确",
    label = "采购数量",
    min = 0
  )
  private String purchaseQuantity;

  /** 审批状态 */
  @ExcelProperty("审批状态")
  @EnumsString(
    value = { "作废", "待提交", "待到货", "已完成", "待审批", "驳回" },
    message = "审批状态只能是“作废”, “待提交”, “待到货”, “已完成”, “待审批”, “驳回”中的一个"
  )
  private String anStatus;

  /** 单据备注 */
  @ExcelProperty("单据备注")
  @Size(max = 50, message = "单据备注长度不能超过50")
  private String orderRemarkSear;

  /** 发货状态 */
  @ExcelProperty("发货状态")
  @EnumsString(
    value = { "未到货", "部分到货", "全部到货" },
    message = "发货状态只能是“未到货”, “部分到货”, “全部到货”中的一个"
  )
  private String arrivalStatus;

  /** 下单时间 */
  @ExcelProperty("下单时间")
  @DateTimeString(message = "下单时间不是有效的时间日期格式")
  private String orderTime;

  /** 付款状态 */
  @ExcelProperty("付款状态")
  @EnumsString(
    value = { "未申请", "已申请", "部分付款", "已付款" },
    message = "付款状态只能是“未申请”, “已申请”, “部分付款”, “已付款”中的一个"
  )
  private String payStatus;

  /** 加急 */
  @ExcelProperty("加急")
  @EnumsString(value = { "是", "否" }, message = "加急只能是“是”, “否”中的一个")
  private String urgentOrNot;
}
